import 'package:json_annotation/json_annotation.dart';

part 'moment.g.dart';

@JsonSerializable()
class Comment {
  final int id;
  final String username;
  final String avatar;
  final String content;
  final String date;

  const Comment({
    required this.id,
    required this.username,
    required this.avatar,
    required this.content,
    required this.date,
  });

  factory Comment.fromJson(Map<String, dynamic> json) => _$CommentFromJson(json);

  Map<String, dynamic> toJson() => _$CommentToJson(this);
}

@JsonSerializable()
class Moment {
  final int? id;
  final int? userId;
  final String? username;
  final String? avatar;
  final String content;
  final List<String> imageList;
  final String? date;
  final List<int>? likeList;
  final List<Comment>? commentList;

  Moment({
    this.id,
    this.userId,
    this.username,
    this.avatar,
    required this.content,
    required this.imageList,
    this.date,
    this.likeList,
    this.commentList,
  });

  factory Moment.fromJson(Map<String, dynamic> json) => _$MomentFromJson(json);

  Map<String, dynamic> toJson() => _$MomentToJson(this);
}

@JsonSerializable()
class PageMoment {
  final List<Moment> records;
  final int total;
  final int size;
  final int current;
  final int pages;

  PageMoment({
    required this.records,
    required this.total,
    required this.size,
    required this.current,
    required this.pages,
  });

  factory PageMoment.fromJson(Map<String, dynamic> json) => _$PageMomentFromJson(json);

  Map<String, dynamic> toJson() => _$PageMomentToJson(this);
}
